
public class Map<State> {
	private char [][] map;   // contiene el mapa leído desde el archivo
	private State [][] posiciones;  // arreglo de estados
 	
	Map(char [][] map) {
		this.map=map;
		posiciones=(State[][]) new Object[this.numFilas()][this.numColumnas()];
	}
	
	public int numFilas() {
		return map.length;
	}
	
	public int numColumnas() {
		return map[0].length;
	}
		
	public boolean libre(int i, int j) {
		return (map[i][j] == 'g' || map[i][j] == 'G' || map[i][j] == '.');
	}

	public boolean libre(DFSState p) {
		int i=p.getX();
		int j=p.getY();
		return (map[i][j] == 'g' || map[i][j] == 'G' || map[i][j] == '.');
	}

	public State getState(int x, int y) {
		return (State) posiciones[x][y];
	}
	
	public void setState(int i, int j, State s) {
		posiciones[i][j]=s;
	}
	
}
